/* Copyright (c) 2022-2025 Qualcomm Technologies International, Ltd. */
/* %%version */

#ifndef GATT_XPAN_CLIENT_WRITE_H_
#define GATT_XPAN_CLIENT_WRITE_H_

#include "csr_synergy.h"

#ifndef EXCLUDE_GATT_XPAN_CLIENT_MODULE

#include "gatt_xpan_client.h"
#include "gatt_xpan_client_private.h"

/***************************************************************************
NAME
    xpanClientHandleWriteValueRespCfm

DESCRIPTION
    Handle the CsrBtGattWriteCfm message.
*/
void xpanClientHandleWriteValueRespCfm(GXPANC *const xpan_client,
                                       const CsrBtGattWriteCfm *const write_cfm);


/***************************************************************************
NAME
    sendXpanClientWriteCfm

DESCRIPTION
    Handle sending Write CFM
*/
void sendXpanClientWriteCfm(GXPANC *const xpan_client,
                                  const status_t status,
                                  GattXpanClientMessageId id);

/***************************************************************************
NAME
    xpanWriteControlPointConnectSsidReq

DESCRIPTION
    Handle sending Connect SSID command on the Control point characteristic
*/
void xpanWriteControlPointConnectSsidReq(GXPANC *xpanClient, GattXpanClientConnectSsidOp* connectSsidOp);
/***************************************************************************
NAME
    xpanWriteControlPointDisconnectSsidReq

DESCRIPTION
    Handle sending Disconnect SSID command on the Control point characteristic
*/
void xpanWriteControlPointDisconnectSsidReq(GXPANC *xpanClient, GattXpanClientDisconnectSsidOp* disconnectSsidOp);
/***************************************************************************
NAME
    xpanWriteControlPointConnectedSsidReq

DESCRIPTION
    Handle sending Connected SSID command on the Control point characteristic
*/
void xpanWriteControlPointConnectedSsidReq(GXPANC *xpanClient, GattXpanClientConnectedSsidOp* connectedSsidOp);

/***************************************************************************
NAME
    xpanWriteControlPointAvailableSsidReq
DESCRIPTION
    Handle sending AvailableSsid command on the Control point characteristic
*/
void xpanWriteControlPointAvailableSsidReq(GXPANC *xpanClient, GattXpanClientAvailableSsidOp* availableSsidOp);

/***************************************************************************
NAME
    xpanWriteControlPointRelatedSsidsReq
DESCRIPTION
    Handle sending RelatedSsids command on the Control point characteristic
*/
void xpanWriteControlPointRelatedSsidsReq(GXPANC *xpanClient, GattXpanClientRelatedSsidsOp* relatedSsidsOp);

/***************************************************************************
NAME
    xpanWriteControlPointMdnsSrvUuidReq
DESCRIPTION
    Handle sending MdnsSrvUuid command on the Control point characteristic
*/
void xpanWriteControlPointMdnsSrvUuidReq(GXPANC *xpanClient, GattXpanClientMdnsSrvUuidOp* mdnsSrvUuidOp);

/***************************************************************************
NAME
    xpanWriteControlPointRemoveSsidReq
DESCRIPTION
    Handle sending RemoveSsid command on the Control point characteristic
*/
void xpanWriteControlPointRemoveSsidReq(GXPANC *xpanClient, GattXpanClientRemoveSsidOp* removeSsidOp);

/***************************************************************************
NAME
    xpanWriteControlPointL2capTcpPortReq
DESCRIPTION
    Handle sending L2capTcpPort command on the Control point characteristic
*/
void xpanWriteControlPointL2capTcpPortReq(GXPANC *xpanClient, GattXpanClientL2capTcpPortOp* l2capTcpPortOp);

/***************************************************************************
NAME
    xpanWriteControlPointUdpPortReq
DESCRIPTION
    Handle sending UdpPort command on the Control point characteristic
*/
void xpanWriteControlPointUdpPortReq(GXPANC *xpanClient, GattXpanClientUdpPortOp* udpPortOp);

/***************************************************************************
NAME
    xpanWriteControlPointEtherTypeReq
DESCRIPTION
    Handle sending EtherType command on the Control point characteristic
*/
void xpanWriteControlPointEtherTypeReq(GXPANC *xpanClient, GattXpanClientEtherTypeOp* etherTypeOp);

/***************************************************************************
NAME
    xpanWriteControlPointMacAddressReq
DESCRIPTION
    Handle sending MacAddress command on the Control point characteristic
*/
void xpanWriteControlPointMacAddressReq(GXPANC *xpanClient, GattXpanClientMacAddressOp* macAddressOp);

/***************************************************************************
NAME
    xpanWriteControlPointBearerPreferenceResponseReq
DESCRIPTION
    Handle sending BearerPreferenceResponse command on the Control point characteristic
*/
void xpanWriteControlPointBearerPreferenceResponseReq(GXPANC *xpanClient, GattXpanClientBearerPreferenceResponseOp* bearerPreferenceResponseOp);

/***************************************************************************
NAME
    xpanWriteControlPointUpdateBeaconParametersReq
DESCRIPTION
    Handle sending UpdateBeaconParameters command on the Control point characteristic
*/
void xpanWriteControlPointUpdateBeaconParametersReq(GXPANC *xpanClient, GattXpanClientUpdateBeaconParametersOp* updateBeaconParametersOp);

/***************************************************************************
NAME
    xpanWriteControlPointSapPowerStateResponseReq
DESCRIPTION
    Handle sending SapPowerStateResponse command on the Control point characteristic
*/
void xpanWriteControlPointSapPowerStateResponseReq(GXPANC *xpanClient, GattXpanClientSapPowerStateResponseOp* sapPowerStateResponseOp);

/***************************************************************************
NAME
    xpanWriteControlPointClientFeaturesReq
DESCRIPTION
    Handle sending ClientFeatures command on the Control point characteristic
*/
void xpanWriteControlPointClientFeaturesReq(GXPANC *xpanClient, GattXpanClientClientFeaturesOp* clientFeaturesOp);

/***************************************************************************
NAME
    xpanWriteControlPointAudioBearerSwitchRequestReq
DESCRIPTION
    Handle sending AudioBearerSwitchRequest command on the Control point characteristic
*/
void xpanWriteControlPointAudioBearerSwitchRequestReq(GXPANC *xpanClient, GattXpanClientAudioBearerSwitchRequestOp* audioBearerSwitchRequestOp);

/***************************************************************************
NAME
    xpanWriteControlPointWiFiScanResultsReq
DESCRIPTION
    Handle sending WiFiScanResults command on the Control point characteristic
*/
void xpanWriteControlPointWiFiScanResultsReq(GXPANC *xpanClient,
                                             XpanClientInternalMsgWiFiScanResultsReq* wiFiScanResultsReq);

/***************************************************************************
NAME
    xpanWriteControlPointChannelSwitchAnnouncementReq
DESCRIPTION
    Handle sending a Channel Switch Announcement to the Control point characteristic
*/
void xpanWriteControlPointChannelSwitchAnnouncementReq(GXPANC* xpanClient,
                                                       GattXpanClientChannelSwitchAnnouncementOp* channelSwitchAnnouncementOp);

/***************************************************************************
NAME
    xpanWriteControlPointUdpSyncPortReq
DESCRIPTION
    Handle sending a UDP Sync Port to the Control point characteristic
*/
void xpanWriteControlPointUdpSyncPortReq(GXPANC* xpanClient,
                                         GattXpanClientUdpSyncPortOp* udpSyncPortOp);

/***************************************************************************
NAME
    xpanWriteControlPointRoamingRequestReq
DESCRIPTION
    Handle sending a Roaming Request to the Control point characteristic
*/
void xpanWriteControlPointRoamingRequestReq(GXPANC* xpanClient);


/***************************************************************************
NAME
    xpanWriteControlPointMulticastMacAddressReq
DESCRIPTION
    Handle sending a Multicast MAC Address to the Control point characteristic
*/
void xpanWriteControlPointMulticastMacAddressReq(GXPANC* xpanClient,
                                                 GattXpanClientMulticastMacAddressOp* multicastMacAddressOp);


/***************************************************************************
NAME
    xpanWriteTwtConfigurationRequestReq
DESCRIPTION
    Handle writing the TwtConfiguration characteristic
*/
void xpanWriteTwtConfigurationRequestReq(GXPANC *xpanClient, GattXpanClientTwtConfiguration* twtConfiguration);

#endif /* EXCLUDE_GATT_XPAN_CLIENT_MODULE */
#endif /* GATT_XPAN_CLIENT_WRITE_H_ */